package ro.dandanciu.webgallery.domainmodel.utils;

/**
 * Class for defining constants used for DB structure.
 * @author Dan Danciu
 */
public final class DbConstants {

    /**
     * Private constructor to prevent instantiation of this class.
     */
    private DbConstants() { }

    /**
     * Class for user constants.
     */
    public static final class User {

        /**
         * Size of the userId field.
         */
        public static final int USER_ID_SIZE = 30;

        /**
         * Size of the name of the user field.
         */
        public static final int USER_NAME_SIZE = 60;

        /**
         * Size of the password field.
         */
        public static final int PASSWORD_SIZE = 20;

        /**
         * Size of the email field.
         */
        public static final int EMAIL_SIZE = 50;

        /**
         * Size of the language field.
         */
        public static final int LANGUAGE_SIZE = 10;

        /**
         * Private constructor to prevent instantiation of this class.
         */
        private User() { }
    }


    /**
     * Class for image constants.
     */
    public static final class Image {

        /**
         * Size of the name of the image field.
         */
        public static final int NAME_SIZE = 60;

        /**
         * Size of the content type of the image field.
         */
        public static final int TYPE_SIZE = 40;

        /**
         * The size of the field storing the description of the image.
         */
        public static final int DESCRIPTION_SIZE = 200;

        /**
         * Private constructor to prevent instantiation of this class.
         */
        private Image() { }

    }

    /**
     * Class for gallery constants.
     */
    public static final class Gallery {

        /**
         * The size of the field for storing the name of the gallery.
         */
        public static final int NAME_SIZE = 60;

        /**
         * The size of the field for storing the description of the gallery.
         */
        public static final int DESCRIPTION_SIZE = 200;

        /**
         * Private constructor to prevent instantiation of this class.
         */
        private Gallery() { }
    }

    /**
     * Class for adverts constants.
     */
    public static final class Advert {

        /**
         * The size of the field for storing the text of the advert.
         */
        public static final int TEXT_SIZE = 200;

        /**
         * Private constructor to prevent instantiation of this class.
         */
        private Advert() { }
    }

    /**
     * Class for generic constants.
     */
    public static final class Generic {

        /**
         * Size of the modified field.
         */
        public static final int MODIFIED_SIZE = 30;

        /**
         * Private constructor to prevent instantiation of this class.
         */
        private Generic() { }
    }

    public static final class RegistrationRequest {

        /**
         * The size of the column CODE.
         */
        public static final int CODE_SIZE = 20;
    }
}
